Skip to main content

States Based UI Split

Source Code: https://github.com/dyte-io/react-native-samples/tree/main/samples/create_your_own_ui

Now that the basic states and configs handling is taken care of, we can focus on customisation.

states.meeting represents the meeting state such as setup/ended/waiting/joined that can be utilised to show different screens.

import React from 'react';
import { View } from 'react-native';

function CustomDyteMeetingUI({
meeting,
config,
states,
setStates,
}: {
meeting: DyteClient;
config: UIConfig;
states: CustomStates;
setStates: SetStates;
}) {
if (!meeting) {
return <View> A loading screen comes here </View>;
}

if (states.meeting === 'setup') {
return <View>Pre-call UI comes here </View>;
}

if (states.meeting === 'ended') {
return <View>Post-call UI comes here </View>;
}

if (states.meeting === 'waiting') {
return <View>Waiting room UI comes here </View>;
}

if (states.meeting === 'joined') {
return <View>In-call UI comes here </View>;
}
}

Since we have already discussed how you can build a custom pre-call UI from scratch, we will now focus exclusively on the in-meeting UI.

In the next steps, we will learn how we can create custom header, footer and the stage UI using Dyte components.